<?php


class Api {

	//自定义的token值
	public $token;


	//构造方法--需提供token值
	public function __construct($token) {
		$this -> token = $token;
	}

	//验证消息是否来自微信服务器 如果成功 将echostr返回给微信服务器
	public function valid() {
		$echoStr = $_GET['echostr'];
		if ($this -> checkSignature()) {
			echo $echoStr;
		}
		exit;
	}
	
	//验证步骤
		// 1）将token、timestamp、nonce三个参数进行字典序排序
		// 2）将三个参数字符串拼接成一个字符串进行sha1加密
		// 3）开发者获得加密后的字符串可与signature对比，标识该请求来源于微信
	private function checkSignature() {
		//获得微信服务器携带过来的GET参数
		$signature = $_GET['signature'];
		$timestamp = $_GET['timestamp'];
		$nonce = $_GET['nonce'];
		//验证
		$arr = [$timestamp,$nonce,$this -> token];
		sort($arr,SORT_STRING);
		$str = join($arr);
		$str = sha1($str);
		if($str == $signature) {
			return true;
		}
		return false;
	}


	
}